package com.hongji.lms5xxcommunicator.realtime.websoket;

/**
 * WebSocket 广播接口。
 *
 * <p>职责：
 * <ul>
 *   <li>定义统一的广播行为，将对象消息推送到所有已连接的客户端。</li>
 *   <li>具体实现由不同的 Broadcaster 类提供，例如 {@link SpringWsBroadcaster}。</li>
 * </ul>
 *
 * <p>使用说明：
 * <ol>
 *   <li>通过 Spring 注入 {@code WsBroadcaster}。</li>
 *   <li>调用 {@link #broadcast(Object)} 方法即可发送数据。</li>
 *   <li>输入对象可以是 JSON 字符串，也可以是任意 Java 对象（实现类可决定序列化方式）。</li>
 * </ol>
 */
public interface WsBroadcaster {

    /**
     * 向所有客户端广播消息。
     *
     * <p>实现类需要保证：
     * <ul>
     *   <li>支持 JSON 字符串直接广播。</li>
     *   <li>支持任意对象，必要时自动序列化为 JSON。</li>
     *   <li>广播异常时应记录日志，但不影响主流程。</li>
     * </ul>
     *
     * @param dto 广播的数据对象，可以是 JSON 字符串或 Java 对象
     */
    void broadcast(Object dto);
}
